实例 import java.io.IOException; import java.io.OutputStream; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.net.Socket; import java.nio.ByteBuffer; import java.nio.channels.SelectionKey ; import java.nio.channels.Selector; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel ; import java.util.Iterator; import java.util.Set; class NIOServer { private static String readDataFromSocketChannel
https://github.com/akullpp/awesome-java Awesome Java [图片上传失败... Modern Java - A Guide to Java 8 - Popular Java 8 guide. Java EE - Official Java EE Twitter account. Java Magazine - Official Java Magazine account. Java - Official Java Twitter account. Javin Paul - Well-known Java blogger. Baeldung Dzone Google Java Style InfoQ Java Algorithms and Clients Java, SQL, and jOOQ Java.net Javalobby
所以 Java 提供字符流类,以字符为单位读写数据。 1.1 字符输入流 java.io.Reader抽象类是表示用于读取字符流的所有类的超类,可以读取字符信息到内存中。 关闭此流并释放与此流相关联的任何系统资源 int read() 从输入流读取一个字符 int read(char[] cbuf) 从输入流中读取一些字符,并将它们存储到字符数组 cbuf 中 1.1.2 FileReader 类 java.io.FileReader System.out.println(new String(cbuf,0,len)); } // 关闭资源 fr.close(); } } 1.2 字符输出流 java.io.Writer len) 写入字符串的某一部分,off字符串的开始索引,len写的字符个数 void flush() 刷新该流的缓冲 void close() 先刷新流再关闭流 1.2.2 FileWriter 类 java.io.FileWriter close fw.write('关'); // 写出第1个字符 fw.close(); fw.write('闭'); // 继续写出第2个字符,【报错】java.io.IOException
day02 - Java基础语法 课程目标 1. 【理解】数据类型转换 2. 【掌握】五种运算符类型 3. 【掌握】数据录入 4. 运算符 什么是运算符 运算符 对常量或者变量进行操作的符号,注意符号都是特定,不能改变量 表达式 用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。 10; double num2 = 20.0; double num3 = num1 + num2; // 使用double接收,因为num1会自动提升为double类型 正是由于上述原因,所以在程序开发中我们很少使用 */ 注意:通过此练习深刻理解自增和自减的规律,但实际开发中强烈建议不要写这样的代码!小心挨打! 使数据达到灵活性 使用步骤 导包 Scanner 类在java.util包下,所以需要将该类导入。导包的语句需要定义在类的上面。
Java 8 是旧时代的 Java 6,还不快升级,。最近在做 Java8 到 Java17 的迁移工作,前期做了一些准备,过程中的一些信息记录如下(持续更新。。。 [ERROR] Supported versions: 1.6, 1.8 Kotlin 在 1.6.0 版本开始支持 Java17 的字节码,低于 1.6.0 的编译会直接报错 废弃依赖分析 可以用 jdeps --jdk-internals --multi-release 17 --class-path . encloud-api.jar 来做项目的依赖分析 这样你就可以知道哪些库需要做升级了。 Xloggc:<filepath> -Xlog:gc:file=<filepath> 除此之外,大量的 GC 的参数被移除,比如常用的参数 -XX:+PrintTenuringDistribution,Java17 中,PSYoungGen::resize_spaces代码如下: 在 Java17 中,这部分日志打印被 gc+ergo 的标签日志取代: 还有一个分代 GC 中非常有用的参数 -XX:+PrintTenuringDistribution
17.01_集合框架(HashSet存储字符串并遍历) A:Set集合概述及特点 通过API查看即可 B:案例演示 HashSet存储字符串并遍历 HashSet<String> hs = new HashSet<>(); boolean b1 = hs.add("a"); boolean b2 = hs.add("a"); //当存储不成功的时候,返回false System.out.println(b1); System.out.println(b2);
params); } 二.ajax 1. ajax介绍 AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 u 数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...] 7. jsonlib插件介绍 jsonlib介绍 Json-lib 是一个 Java 类库(官网:http://json-lib.sourceforge.net/)可以实现如下功能: •转换 javabeans , maps, collections, java arrays 和 XML 成为 json 格式数据 •转换 json 格式数据成为 javabeans 对象 Json-lib 需要的 jar 包 •
从繁琐的类型转换到简洁的模式匹配,从冗长的实体类声明到一行完成的记录类,Java 17带来的不仅是语法上的变化,更是开发思维方式的升级。 一、JDK 17:新特性的集大成者 自2021年9月发布以来,JDK 17作为最新的长期支持版本,已经成为现代Java开发的重要基准。 升级准备与兼容性检查 Java 17保持了良好的向后兼容性,但升级时仍需注意: 使用javac -Xlint:deprecation检查废弃API的使用 使用jdeps --jdk-internals分析内部 利用IDE支持:现代IDE(IntelliJ IDEA、Eclipse)能自动识别新语法并提供转换建议 结语 从JDK 8到JDK 17,Java语言的演进体现了从复杂到简洁、从灵活到安全可控的设计哲学转变 Java的未来(如JDK 21的虚拟线程)将继续这一趋势,使Java在高并发、云原生时代保持竞争力。 升级到JDK 17不仅是技术栈的更新,更是开发体验和代码质量的全面提升。
Java 17 是Java 最重要的一个LTS版本之一,但是直接从Java 8 过渡到Java 17跨度太大了,势必有些困难。 所以胖哥抽时间梳理了一下从Java 9到Java 17的一些常用API的变动。今天先来看看Java 9 都有什么东西。 Java 9 Java 9 最大的变化就是引入了一个JShell和模块化,日常并没有用太多,所以今天不花时间在这些功能上面。 Stream扩展 Stream API 是Java 8中引入的最重要的特性之一。在Java 9中Stream进一步得到了加强。 总结 其实Java 9 还有一些底层的优化,不过对于普通开发者来说了解这些就够用了。上面几个特性,比较常用的就是静态不变集合、try-with-resources优化。
Java 11是自Java 8以来的又一个LTS版本,是目前全球使用最多的LTS版本之一。今天我们接着在Java 9 到 Java 17系列文章中来认识针对普通开发者的Java 11。 字符串API增强 在Java 11中,针对String的操作进一步得到加强。避免我们在很常见的场景中引入额外的、复杂的API。 var可以用于修饰Lambda局部变量 在Java 10中引入的var来进行类型推断。 ❝HttpClient 的包名由 jdk.incubator.http 改为 java.net.http。 在年初的Java生态调查数据显示Java 11的用户数量大幅增长,成为了主流版本选择之一。
本文介绍了Java IO流的基本概念,使用方法,以及使用的注意事项等。帮助你更好地理解和使用Java的IO流。 文章首发于我的个人博客: https://h2pl.github.io/2018/05/04/javase17 更多关于Java后端学习的内容请到我的CSDN博客上查看: https://blog.csdn.net 可以浏览Java Readers and Writers获取更多关于字符流输入输出的信息。 InputStream java.io.InputStream类是所有Java IO输入流的基类。 如果你正在开发一个从流中读取数据的组件,请尝试用InputStream替代任何它的子类(比如FileInputStream)进行开发。这么做能够让你的代码兼容任何类型而非某种确定类型的输入流。 但是,如果你需要在线程之间传递字节数据,Java IO的管道是一个不错的选择。 Java IO:网络 Java中网络的内容或多或少的超出了Java IO的范畴。
例如Java 16 是2021年3月发布的,而 Java 17是2021年9月发布。 Java LTS 版本 升级优先选择 LTS 版本,LTS表示长期支持版本。 接下来,我们就一起来学习从Java9~Java17各版本中具有代表性的一些新特性吧。 Java 17 新特性 Java 17作为新的LTS长期维护版本,我们来看看都更新了什么(不包含预览特性,包括switch第二次增强,哈哈,果然还是强度不够,都连续加强两个版本了) 密封类型 密封类型可以说是 Java 17正式推出的又一重磅类型,它在Java 15首次提出并测试了两个版本。 在Java 17之前想要实现就很麻烦。
JRebel 发布了最新的 2022 Java 开发人员生产力报告。 探讨了 2022 年 Java 开发人员调查的结果,并详细说明了 Java 开发的最大趋势如何影响从技术选择到部署和提交时间的方方面面。 调查结果指出,大多数 Java 开发人员正计划迁移到该语言的最新长期支持 (LTS) 版本;其中,62% 的开发人员计划在未来 12 个月内进行切换。 当比较不同规模的公司升级到 Java 17 的可能性时,JRebel 发现员工少于 100 人的公司比大型公司更有可能进行升级。他们推测,这是由于升级大型企业 Java 应用的复杂性和成本所致。 来源:OSCHINA ,原文连接:www.oschina.net/news/184962/java-developers-transition-to-java-17-2022 ------ 我们创建了一个高质量的技术交流群
17。 他发任他发,我用Java 8?技术迭代的推动从来不是普通开发者引领的,而是走的精英路线,社区大佬、知名项目、开源布道师的话语权更强大,从某种程度上来说他们可以“绑架”开发者。 Spring 5.x的特性和优势“迫使”开发者不得不认清形势。到2018年的时候已经有79%的新项目转向Java 8 (数据来自snyk调研)。 如果从Java 8来看,Java 17汇聚了7年Java社区的成果,如果一个Java开发停留在7年前的JDK环境中,必然会影响技术竞争力。 当Java 9到Java 17的新语法糖带来的高效率和Java 17带来的高性能得到充分体现,坚守旧版本的声音将会越来越小。我个人感觉到2023年Java 17才会进入快速增长期。
在上一篇我们对Java 9的特性进行了一些回顾,今天接着来看看Java 10带来了什么特性。 之所以需要把Java 8 到Java 17的特性归纳一遍,因为Java社区对Java 17的重视程度前所未有。话不多说,让我们走进Java 10。 Java 10 从Java 10 开始,Java的迭代周期缩短为半年,半年发布一个版本。 ❝另一件要注意的事情是var 并不是Java中的关键字,这确保了Java的向后兼容性。另外使用var没有运行时开销,也不会使 Java 成为动态语言。var标记的变量的类型仍然是在编译时推断出来。 其它增强特性 Java 10的性能也明显加强了,支持G1并行垃圾收集。另外引入了即时编译技术(JIT),该技术可以加速java程序的运行速度。
17.1 线程简介 Java中将并发完成的每一件事情称为线程。Java语言提供了并发机制,我们可以在程序中执行多个线程,每一个线程完成一个功能,并与其他线程并发执行,这种机制被称为多线程。 主方法线程启动由Java虚拟机负责,程序员负责启动自己的线程。 调用start()方法启动线程 package core; import java.awt.Container; import java.net.URL; import javax.swing.*; public : package core; import javax.swing.JFrame; import java.awt.*; import java.util.*; public class SleepMethodTest 17.6.1 线程安全 实际开发中,使用多线程程序的情况很多,如银行排号系统、火车站售票系统等,这种多线程的程序通常会发生问题。
comparable 接口实际上是出自java.lang包 它有一个 compareTo(Object obj)方法用来排序 comparator接口实际上是出自 java.util 包它有一个compare (Object obj1, Object obj2)方法用来排序 package java.util; public interface Comparator<T> { int compare (T o1, T o2); boolean equals(Object obj); } package java.lang; import java.util.*; public interface
Java 13在2019年9月发布,这个版本引入的正式可用特性几乎没有,是我认为最无聊的版本之一。所以我们跳过Java 13直接来看Java 14吧。 Switch表达式 我觉得switch表达式在日常中开发被使用的太少了,不是因为这个关键字和if比起来太“难”,而是因为它很冗长,而且这种视觉上的噪声容易掩盖那些难以调试的错误,特别是那些break语句 at cn.felord.SomeClass.main(SomeClass.java:17) 现在日志会说明空指针的具体来源: Exception in thread "main" java.lang.NullPointerException : Cannot store to int array because "arr" is null at cn.felord.SomeClass.main(SomeClass.java:17) 我们可以明确地知道 参考资料 [1]Java 14发行日志: https://openjdk.java.net/projects/jdk/14/
上一篇说完了Java11,本篇接着说一下Java12.Java 12 对开发者有用的特性并不是特别多,不过实用性还是有的 字符串增强 Java 12 进一步对字符串操作进行增强,增加了两个方法。 来实验一下: String text = " Hello \n Java12"; System.out.println("缩进前"); System.out.println String txt = "hello "; // hello hello String s = txt.transform(str -> str.repeat(2)); ❝Java 基于内容的文件匹配 Java 12 在Files工具类中增加了一个新的静态方法Files.mismatch(Path,Path),用来找两个文件内容(byte)不一样的地方,返回两个文件内容中第一个不匹配字节的位置 其它 除了上面以外,Java12还有一些预览属性和JVM增强功能,并没有太多的亮点。
如果您当前正在使用 Java 11,那么可能是时候考虑迁移到 Java 17 以利用其新功能了。 在本文中,我们将讨论 Java 17 中的新增功能,尽管这里讨论的一些功能已在 Java 11 到 Java 17 的后续版本中引入。 1为什么我们应该从 Java 11 迁移? Spring 6: Spring 的最新版本,Spring 6 将需要 Java 17 才能工作,并且由于有许多与它们一起工作的库,它们也将迁移到 Java 17。 适用于 Java 17 的免费 Oracle JDK: Java 17 是根据新的 NFTC(Oracle 免费条款和条件)许可证发布的。 并行垃圾收集器(Java 17 中提供)比 G1 垃圾收集器(Java 11 中使用)快 16.39%。 从 Java 11 迁移到 Java 17 可以提供许多好处,包括新功能和改进的性能。